home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / parser.jar / com / sun / xml / tree / SimpleElementFactory.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-02-23  |  3.5 KB  |  132 lines

  1. package com.sun.xml.tree;
  2.  
  3. import java.util.Dictionary;
  4. import java.util.Hashtable;
  5. import java.util.Locale;
  6.  
  7. public class SimpleElementFactory implements ElementFactory {
  8.    private Dictionary defaultMapping;
  9.    private ClassLoader defaultLoader;
  10.    private String defaultNs;
  11.    private Dictionary nsMappings;
  12.    private Dictionary nsLoaders;
  13.    private Locale locale = Locale.getDefault();
  14.    // $FF: synthetic field
  15.    static Class class$com$sun$xml$tree$ElementNode;
  16.  
  17.    public void addMapping(String var1, Dictionary var2, ClassLoader var3) {
  18.       if (var1 != null && var2 != null) {
  19.          if (this.nsMappings == null) {
  20.             this.nsMappings = new Hashtable();
  21.             this.nsLoaders = new Hashtable();
  22.          }
  23.  
  24.          this.nsMappings.put(var1, var2);
  25.          if (var3 != null) {
  26.             this.nsLoaders.put(var1, var3);
  27.          }
  28.  
  29.       } else {
  30.          throw new IllegalArgumentException();
  31.       }
  32.    }
  33.  
  34.    public void addMapping(Dictionary var1, ClassLoader var2) {
  35.       if (var1 == null) {
  36.          throw new IllegalArgumentException();
  37.       } else {
  38.          this.defaultMapping = var1;
  39.          this.defaultLoader = var2;
  40.       }
  41.    }
  42.  
  43.    // $FF: synthetic method
  44.    static Class class$(String var0) {
  45.       try {
  46.          return Class.forName(var0);
  47.       } catch (ClassNotFoundException var2) {
  48.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  49.       }
  50.    }
  51.  
  52.    public ElementEx createElementEx(String var1) {
  53.       return this.doMap(var1, this.defaultMapping, this.defaultLoader);
  54.    }
  55.  
  56.    public ElementEx createElementEx(String var1, String var2) {
  57.       Dictionary var3 = null;
  58.       if (var1 == null) {
  59.          var1 = this.defaultNs;
  60.       }
  61.  
  62.       if (this.nsMappings != null) {
  63.          var3 = (Dictionary)this.nsMappings.get(var1);
  64.       }
  65.  
  66.       return var3 == null ? this.doMap(var2, this.defaultMapping, this.defaultLoader) : this.doMap(var2, var3, (ClassLoader)this.nsLoaders.get(var1));
  67.    }
  68.  
  69.    private ElementNode doMap(String var1, Dictionary var2, ClassLoader var3) {
  70.       Class var4 = this.map2Class(var1, var2, var3);
  71.       if (var4 == null) {
  72.          var4 = this.map2Class("*Element", var2, var3);
  73.       }
  74.  
  75.       ElementNode var5;
  76.       if (var4 == null) {
  77.          var5 = new ElementNode();
  78.       } else {
  79.          try {
  80.             var5 = (ElementNode)var4.newInstance();
  81.          } catch (Exception var7) {
  82.             throw new IllegalArgumentException(this.getMessage("SEF-003", new Object[]{var1, var4.getName(), ((Throwable)var7).getMessage()}));
  83.          }
  84.       }
  85.  
  86.       return var5;
  87.    }
  88.  
  89.    String getMessage(String var1) {
  90.       return this.getMessage(var1, (Object[])null);
  91.    }
  92.  
  93.    String getMessage(String var1, Object[] var2) {
  94.       return XmlDocument.catalog.getMessage(this.locale, var1, var2);
  95.    }
  96.  
  97.    private Class map2Class(String var1, Dictionary var2, ClassLoader var3) {
  98.       Object var4 = var2.get(var1);
  99.       if (var4 instanceof Class) {
  100.          return (Class)var4;
  101.       } else if (var4 == null) {
  102.          return null;
  103.       } else if (var4 instanceof String) {
  104.          String var5 = (String)var4;
  105.  
  106.          try {
  107.             Class var6;
  108.             if (var3 == null) {
  109.                var6 = Class.forName(var5);
  110.             } else {
  111.                var6 = var3.loadClass(var5);
  112.             }
  113.  
  114.             if (!(class$com$sun$xml$tree$ElementNode != null ? class$com$sun$xml$tree$ElementNode : (class$com$sun$xml$tree$ElementNode = class$("com.sun.xml.tree.ElementNode"))).isAssignableFrom(var6)) {
  115.                throw new IllegalArgumentException(this.getMessage("SEF-000", new Object[]{var1, var5}));
  116.             } else {
  117.                var2.put(var1, var6);
  118.                return var6;
  119.             }
  120.          } catch (ClassNotFoundException var8) {
  121.             throw new IllegalArgumentException(this.getMessage("SEF-001", new Object[]{var1, var5, ((Throwable)var8).getMessage()}));
  122.          }
  123.       } else {
  124.          throw new IllegalArgumentException(this.getMessage("SEF-002", new Object[]{var1}));
  125.       }
  126.    }
  127.  
  128.    public void setDefaultNamespace(String var1) {
  129.       this.defaultNs = var1;
  130.    }
  131. }
  132.